/**
 * fs-unlink.js删除2.txt文件9示例
 * 使用fs.unlink()方法删除文件
 */

const fs = require('fs');
const path = require('path');

// 方法1：使用回调函数方式删除文件
function deleteFileCallback() {
    const filePath = path.join(__dirname, '2.txt');
    
    fs.unlink(filePath, (err) => {
        if (err) {
            console.error('删除文件失败:', err.message);
        } else {
            console.log('文件删除成功: 2.txt');
        }
    });
}

// 方法2：使用Promise方式删除文件
function deleteFilePromise() {
    const filePath = path.join(__dirname, '2.txt');
    
    return new Promise((resolve, reject) => {
        fs.unlink(filePath, (err) => {
            if (err) {
                reject(err);
            } else {
                resolve('文件删除成功');
            }
        });
    });
}

// 方法3：使用async/await方式删除文件
async function deleteFileAsync() {
    const filePath = path.join(__dirname, '2.txt');
    
    try {
        await fs.promises.unlink(filePath);
        console.log('文件删除成功: 2.txt');
    } catch (err) {
        console.error('删除文件失败:', err.message);
    }
}

// 方法4：删除文件前先检查文件是否存在
function deleteFileWithCheck() {
    const filePath = path.join(__dirname, '2.txt');
    
    // 先检查文件是否存在
    fs.access(filePath, fs.constants.F_OK, (err) => {
        if (err) {
            console.log('文件不存在，无需删除');
            return;
        }
        
        // 文件存在，执行删除操作
        fs.unlink(filePath, (err) => {
            if (err) {
                console.error('删除文件失败:', err.message);
            } else {
                console.log('文件删除成功: 2.txt');
            }
        });
    });
}

// 执行删除操作
console.log('开始删除文件...');

// 选择其中一种方法执行
deleteFileCallback();

// 或者使用Promise方式
// deleteFilePromise()
//     .then(result => console.log(result))
//     .catch(err => console.error('删除失败:', err.message));

// 或者使用async/await方式
// deleteFileAsync();

// 或者使用带检查的方式
// deleteFileWithCheck();
